再一次,javascript设计模式与开发实践-迭代器模式

简述

提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。

其实语言本身就内置有迭代器,例如[].forEach()等。

使用场景

  • 遍历
  • 选择加载
  • ..

案例

假如要根据浏览器的兼容不同来使用不同的上传方案,那么适合使用迭代器模式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
var getActiveObj = function () {
try {
return new IE();
} catch (e) {
return false;
}
};

var getFlashObj = function () {
try {
return new Flash();
} catch (e) {
return false;
}
};

var gethtmlObj = function () {
try {
return '<input type="file" />';
} catch (e) {
return false;
}
};

var iterator = function () {
for (var i = 0, fn; fn = arguments[i++];) {
var obj = fn();

if(obj) return obj;
}
};

console.log(iterator(getActiveObj, getFlashObj, gethtmlObj));